function MaxId(w) {
	var max_id = 0;
	for( key in w.items.keys) {
		var skey = w.items.keys[key].split("-");
		if (skey[0] == 'column') {
			if (max_id < skey[1]) {
				max_id = skey[1];
			} 
		}
	}
	return max_id - 0
}

function add_search_param(obj) {
	var find_window = Ext.getCmp('find_window');
	var max_id = MaxId(find_window);
	if (max_id < 9) {
		/*find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Group(),
			displayField: 'group',
			id: 'group-' + (max_id + 1)
		}));*/
		find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Columns(),
			displayField: 'name',
			width: 150,
			id: 'column-' + (max_id + 1)
		}));
		find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Operation(),
			displayField: 'name',
			width:100,
			id: 'operation-' + (max_id + 1)
		}));
		find_window.add(Ext.create(Ext.form.field.Base, {
			width: 400,
			id: 'value-' + (max_id + 1),
				listeners: {
				keydown: {
					element: 'el',
					fn: find_keydown,
				}
			}
		}));
		/*find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Operator(),
			displayField: 'name',
			id: 'operator-' + (max_id + 1)
		}));*/
	}
}

function remove_search_param(obj) {
	var find_window = Ext.getCmp('find_window');
	var max_id = MaxId(find_window);
	if (max_id > 1) {
		//Ext.getCmp("group-" + max_id).destroy();
		Ext.getCmp("column-" + max_id).destroy();
		Ext.getCmp("operation-" + max_id).destroy();
		Ext.getCmp("value-" + max_id).destroy();
		//Ext.getCmp("operator-" + max_id).destroy();
	}
}

function reg_search(obj) {
	var find_window = Ext.getCmp('find_window');
	var max_id = MaxId(find_window);
	var param = []
	for( var i = 1; i < max_id + 1; i++) {
		try {
			if (Ext.getCmp('column-' + i).valueModels[0].data.id == 1) {
				value = new Date(Ext.getCmp('value-' + i).getValue().replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));
				value = value.getTime() / 1000;
			} else {
				value = Ext.getCmp('value-' + i).getValue();
			}
			param [i-1] = [
				//Ext.getCmp('group-' + i).valueModels[0].data.id,
				Ext.getCmp('column-' + i).valueModels[0].data.id,
				Ext.getCmp('operation-' + i).valueModels[0].data.id,
				value
				//(max_id == i) ? 0 : Ext.getCmp('operator-' + i).valueModels[0].data.id
				//Ext.getCmp('operator-' + i).valueModels[0].data.id
			];
		} catch (TypeError) {
			Ext.Msg.show({
				title: 'Ошибка',
				msg: 'Заполните все поля!',
				buttons: Ext.Msg.OK,
				icon: Ext.Msg.ERROR
			});
			return;
		};
	}
	qid = server.register_search(param);
	main_store.proxy.url = "/frigoglass/src/server/get_main.py?qid=" + qid;
	find_window.close();
	main_store.load();
}

function sn_keydown(k) {
	if(k.keyCode == 13){
		Ext.getCmp('in-1000').focus();
		if (Ext.getCmp('in-1000').getValue() == 'Нет номера') {
			k = {keyCode: 13};
			in_keydown(k);
		}
	};
}

function find_keydown(k, y) {
	if(k.keyCode == 13){
		reg_search();
	}
}

function adate_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('aclient').focus();
	}
}

function aclient_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('aaddress').focus();
	}
}

function aaddress_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('amodel').focus();
	}
}

function amodel_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('adisign').focus();
	}
}

function adisign_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('awarranty').focus();
	}
}

function awarranty_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('attn').focus();
	}
}

function attn_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('aschet').focus();
	}
}

function aschet_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('acode').focus();
	}
}

function acode_keydown(k, y) {
	if(k.keyCode == 13){
		k.keyCode = '';
		Ext.getCmp('acomment').focus();
	}
}

function in_keydown(k) {
	if(k.keyCode == 13){
		snin = Ext.getCmp('snin-1000');
		var Sn = Ext.getCmp('sn-1000').getValue();
		var In = Ext.getCmp('in-1000').getValue();
		if (In == 'Нет номера') {
			In = "";
		} else {
			Ext.getCmp('in-1000').reset();
		}
		Ext.getCmp('sn-1000').reset();
		Ext.getCmp('sn-1000').focus();
		server2.check_ident({
			params:[Sn, In],
			onSuccess: function(result) {
				if (!result) {
					snin.store.add({serial_number: Sn, inventory_number: In, c: result});
				} else {
					if (In == "") {
						var param = [[2, 1, Sn]]
					} else {
						var param = [[3, 1, In]]
					}
					server2.register_search({
						params: [param],
						onSuccess: function(nqid) {
							main_store2.proxy.url = "/frigoglass/src/server/get_main.py?qid=" + nqid;
							main_store2.load();
							var tw = Ext.create('Ext.window.Window', {
								title: 'Добавление данных в базу',
								height: 250,
								width: 550,
								modal: true,
								items: [{
									xtype: 'grid',
									height: '100%',
									width: '100%',
									store: main_store2,
									scroll: 'both',
									plugins: [{
										ptype: 'rowexpander',
										rowBodyTpl : [
											'<p>{comment}</p>'
										]
									}],
									columns: [
										Ext.create('Ext.grid.RowNumberer'),
										{text: 'Дата', dataIndex: 'date', renderer: Ext.util.Format.dateRenderer('d.m.Y')},
										{text: 'Серийный номер', dataIndex: 'sn'},
										{text: 'Инвентарный номер', dataIndex: 'in'},
										{text: 'Название клиента', dataIndex: 'client'},
										{text: 'Адрес доставки', dataIndex:	'address'},
										{text: 'Модель', dataIndex: 'model'},
										{text: 'Дизайн', dataIndex: 'disign'},
										{text: 'Гарантия', dataIndex: 'warranty'},
										{text: '№ ТТН', dataIndex: 'ttn'},
										{text: '№ с/фактуры', dataIndex: 'schet'},
										{text: 'Склад.код', dataIndex: 'code', flex: 1},
									]
								}],
								buttons: [{
										xtype: 'field',
										hidden: true,
										id: 'twsn',
										value: Sn,
									},{
										xtype: 'field',
										hidden: true,
										id: 'twin',
										value: In,
									},{
									xtype: 'button',
									text: 'Добавить',
									handler: function() {
										snin.store.add({
											serial_number: Ext.getCmp('twsn').getValue(),
											inventory_number: Ext.getCmp('twin').getValue(), 
											c: result
										});
										tw.close();
										Ext.getCmp('snin-1000').setScrollTop(100000);
										Ext.getCmp('sn-1000').focus();
									}
								},{
									xtype: 'button',
									text: 'Отменить',
									handler: function(){
										tw.close();
										Ext.getCmp('snin-1000').setScrollTop(100000);
										Ext.getCmp('sn-1000').focus();
									}
								}]
							});
							tw.show();
						},
						onException: function(errObj) {
							Ext.Msg.show({
								title: 'Ошибка',
								msg: 'Произошла ошибочка! Регистрация номера поиска не удалась!',
								buttons: Ext.Msg.OK,
								icon: Ext.Msg.ERROR
							});
						}
					});
				}
				Ext.getCmp('snin-1000').setScrollTop(100000);
				Ext.getCmp('sn-1000').focus();
			},
			onException: function(errObj) {
				Ext.Msg.show({
					title: 'Ошибка',
					msg: 'Произошла ошибочка! Номер не добавлен!',
					buttons: Ext.Msg.OK,
					icon: Ext.Msg.ERROR
				});
			}
		});
		//c = server.check_ident(Sn, In);
		
	};
}

function add_main() {
	var adate = Ext.getCmp('adate').getValue();
	var aclient = Ext.getCmp('aclient').getValue();
	var aaddress = Ext.getCmp('aaddress').getValue();
	var amodel = Ext.getCmp('amodel').getValue();
	var adisign = Ext.getCmp('adisign').getValue();
	var awarranty = Ext.getCmp('awarranty').getValue();
	var attn = Ext.getCmp('attn').getValue().split("/");
	var aschet = Ext.getCmp('aschet').getValue().split("/");
	var acode = Ext.getCmp('acode').getValue();
	var acomment = Ext.getCmp('acomment').getValue();
	var check = [adate, aclient, aaddress, amodel, adisign, awarranty, attn, aschet,
			 acode];
	for (var i in check) {
		if (!check[i]) {
			if (check[i] != 0 ){
				Ext.Msg.show({
					title: 'Ошибка',
					msg: 'Заполните все поля!' + i + check[i],
					buttons: Ext.Msg.OK,
					icon: Ext.Msg.ERROR
				});
				return false;
			}
		}
	}
	var store = Ext.getCmp('snin-1000').store;
	if (store.data.length) {
		var params = []
		for (var i in store.data.items){
			params[i] = {
				serial_number: store.data.items[i].data.serial_number,
				inventory_number: store.data.items[i].data.inventory_number
			} 
		}
		var id_main = server.save_main(adate.getTime() / 1000, aclient, aaddress, amodel,
			adisign, awarranty, attn, aschet, acode, acomment, params);
	} else {
		Ext.Msg.show({
			title: 'Ошибка',
			msg: 'Заполните таблицу номеров!',
			buttons: Ext.Msg.OK,
			icon: Ext.Msg.ERROR
		});
		return false;
	}
	return true;
}

function add_main_n(){
	if (add_main()) {
		Ext.getCmp('add_window').close();
		main_store.load();
	}
}

function add_main_c(){
	if (add_main()) {
		var store = Ext.getCmp('snin-1000').store;
		store.load();
		main_store.load();
	}
}

function cell_color(value, md, record){
	if (record.data.c) {
		return '<font color="#CC0000">' + value + '</font>';
	}
	return value
}